#define PRECISION int
/*
#ifdef cl_amd_fp64 
#pragma OPENCL EXTENSION cl_amd_fp64 : enable
#else
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
#endif*/
#pragma OPENCL EXTENSION cl_amd_fp64
// Kernel function.
__kernel void OpenCLTemplateKernel(__global PRECISION *matrix_A, __global PRECISION *matrix_B_transpose,__global PRECISION *matrix_C, int rows_matrix_A, int colums_matrix_A, int rows_matrix_B,int colums_matrix_B, unsigned int start_thread)
{
	PRECISION temp = 0;
	unsigned int i = get_global_id(0)+start_thread;
	unsigned int j = get_global_id(1);
	if(j>=rows_matrix_A) return;
	else if(j>=rows_matrix_A) return;
	if(i>=colums_matrix_B) return;
	
	temp = 0;
	for(int k=0; k<colums_matrix_A; k++)
		temp = temp + (matrix_A[i*colums_matrix_A+k] * matrix_B_transpose[j*rows_matrix_B+k]);
	
	matrix_C[i*colums_matrix_B+j] = temp;
}